const app = getApp();

Page({
  data: {
    userInfo: null,
    isEditing: false,
    tempUserInfo: null
  },

  onLoad: function (options) {
    // 获取用户信息
    this.getUserInfo();
  },

  // 确保tempUserInfo存在
  ensureTempUserInfo: function() {
    if (!this.data.tempUserInfo) {
      const defaultUserInfo = {
        gender: '未设置',
        birthday: '未设置',
        phone: '未设置',
        email: '未设置',
        nickName: '用户昵称',
        avatarUrl: '/images/default-avatar.png',
        memberLevel: '普通会员',
        points: 0,
        balance: 0
      };
      
      this.setData({
        tempUserInfo: defaultUserInfo,
        userInfo: defaultUserInfo
      });
      
      return true; // 表示进行了初始化
    }
    return false; // 表示没有进行初始化
  },

  // 获取用户信息
  getUserInfo: function () {
    // 从本地存储获取用户信息
    const storedUserInfo = wx.getStorageSync('userInfo');
    let userInfo = null;
    
    if (storedUserInfo) {
      try {
        userInfo = JSON.parse(storedUserInfo);
      } catch (e) {
        console.error('解析用户信息失败:', e);
      }
    }
    
    // 如果没有获取到用户信息或解析失败，创建默认数据
    if (!userInfo) {
      userInfo = {
        nickName: '用户昵称',
        avatarUrl: '/images/default-avatar.png',
        gender: '未设置',
        birthday: '未设置',
        phone: '未设置',
        email: '未设置',
        memberLevel: '普通会员',
        points: 0,
        balance: 0
      };
    }
    
    this.setData({
      userInfo: userInfo,
      tempUserInfo: JSON.parse(JSON.stringify(userInfo)) // 创建深拷贝用于编辑
    });
  },

  // 开始编辑某个字段
  startEdit: function (e) {
    const { field } = e.currentTarget.dataset;
    this.setData({
      isEditing: field
    });
  },

  // 取消编辑
  cancelEdit: function () {
    // 恢复到原始数据
    this.setData({
      tempUserInfo: JSON.parse(JSON.stringify(this.data.userInfo)),
      isEditing: false
    });
  },

  // 输入变化时更新临时数据
  onInputChange: function (e) {
    this.ensureTempUserInfo();
    
    const { field } = e.currentTarget.dataset;
    const { value } = e.detail;
    
    const tempUserInfo = this.data.tempUserInfo;
    tempUserInfo[field] = value;
    
    this.setData({
      tempUserInfo
    });
  },

  // 选择性别
  chooseGender: function (e) {
    this.ensureTempUserInfo();
    
    const { gender } = e.currentTarget.dataset;
    const tempUserInfo = this.data.tempUserInfo;
    tempUserInfo.gender = gender;
    
    this.setData({
      tempUserInfo
    });
  },

  // 选择生日
  bindDateChange: function (e) {
    this.ensureTempUserInfo();
    
    const tempUserInfo = this.data.tempUserInfo;
    tempUserInfo.birthday = e.detail.value;
    
    this.setData({
      tempUserInfo
    });
  },

  // 选择头像
  chooseAvatar: function () {
    this.ensureTempUserInfo();
    
    wx.chooseImage({
      count: 1,
      sizeType: ['compressed'],
      sourceType: ['album', 'camera'],
      success: (res) => {
        // 实际应用中应该上传到服务器并获取URL
        // 这里只是简单地使用本地临时路径
        const tempUserInfo = this.data.tempUserInfo;
        tempUserInfo.avatarUrl = res.tempFilePaths[0];
        
        this.setData({
          tempUserInfo
        });
      }
    });
  },

  // 保存所有更改
  saveChanges: function () {
    // 检查tempUserInfo是否存在
    if (!this.data.tempUserInfo) {
      wx.showToast({
        title: '没有数据可保存',
        icon: 'none'
      });
      return;
    }
    
    wx.showLoading({
      title: '保存中...',
      mask: true
    });
    
    // 实际项目中应该调用服务器接口保存用户信息
    // wx.cloud.callFunction({
    //   name: 'updateUserInfo',
    //   data: {
    //     userId: app.globalData.openid,
    //     userInfo: this.data.tempUserInfo
    //   }
    // }).then(res => {
    //   wx.hideLoading();
    //   if (res.result.success) {
    //     this.saveSuccess();
    //   } else {
    //     this.saveFailed(res.result.message);
    //   }
    // }).catch(err => {
    //   console.error('保存用户信息失败', err);
    //   this.saveFailed('网络错误，请重试');
    // });

    // 使用模拟数据，保存到本地存储
    setTimeout(() => {
      // 更新本地存储
      wx.setStorageSync('userInfo', JSON.stringify(this.data.tempUserInfo));
      
      // 更新全局数据
      if (app.globalData.userInfo) {
        app.globalData.userInfo = this.data.tempUserInfo;
      }
      
      wx.hideLoading();
      this.saveSuccess();
    }, 1000);
  },

  // 保存成功处理
  saveSuccess: function () {
    // 更新当前页面显示
    this.setData({
      userInfo: this.data.tempUserInfo,
      isEditing: false
    });
    
    wx.showToast({
      title: '保存成功',
      icon: 'success'
    });
  },

  // 保存失败处理
  saveFailed: function (message) {
    wx.showToast({
      title: message || '保存失败',
      icon: 'none'
    });
  }
}); 